Use assert_precondition on LayoutInstability and EventTiming This CL replaces some assert_unreached with assert_precondition and adds some assert_precondition to tests. The ones that use ScoreWatcher should already throw an error and not timeout. async_test should not use async since that will result in errors not being caught, so this CL fixes that too. Change-Id: Iecda47acce998efac0dc78e5214b60b005c16075 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2020244 Commit-Queue: Nicolás Peña Moreno <npm@chromium.org> Reviewed-by: Tom McKee <tommckee@chromium.org> Cr-Commit-Position: refs/heads/master@{#735429} diff --git a/layout-instability/buffer-layout-shift.html b/layout-instability/buffer-layout-shift.html index b6a33f5..50cabda 100644 --- a/layout-instability/buffer-layout-shift.html +++ b/layout-instability/buffer-layout-shift.html
@@ -10,32 +10,35 @@ <script src="/resources/testharnessreport.js"></script> <script src="resources/util.js"></script> <script> -async_test(async function(t) { - assert_precondition(window.LayoutShift, 'LayoutShift entries are not supported'); +promise_test(async t => { + assert_precondition(window.LayoutShift, 'Layout Instability is not supported.'); // Wait for the initial render to complete. await waitForAnimationFrames(2); const startTime = performance.now(); - new PerformanceObserver(t.step_func_done(list => { - const endTime = performance.now(); - assert_equals(list.getEntries().length, 1); - const entry = list.getEntries()[0]; - assert_equals(entry.entryType, "layout-shift"); - assert_equals(entry.name, ""); - assert_greater_than_equal(entry.startTime, startTime); - assert_less_than_equal(entry.startTime, endTime); - assert_equals(entry.duration, 0.0); - // The layout shift value should be: - // 300 * (100 + 60) * (60 / maxDimension) / viewport size. - assert_equals(entry.value, computeExpectedScore(300 * (100 + 60), 60)); + return new Promise(resolve => { + new PerformanceObserver(t.step_func(list => { + const endTime = performance.now(); + assert_equals(list.getEntries().length, 1); + const entry = list.getEntries()[0]; + assert_equals(entry.entryType, "layout-shift"); + assert_equals(entry.name, ""); + assert_greater_than_equal(entry.startTime, startTime); + assert_less_than_equal(entry.startTime, endTime); + assert_equals(entry.duration, 0.0); + // The layout shift value should be: + // 300 * (100 + 60) * (60 / maxDimension) / viewport size. + assert_equals(entry.value, computeExpectedScore(300 * (100 + 60), 60)); - // The entry should not be available via getEntries* methods. - assert_equals(performance.getEntriesByType('layout-shift').length, 0, 'getEntriesByType should have no layout-shift entries'); - assert_equals(performance.getEntriesByName('', 'layout-shift').length, 0, 'getEntriesByName should have no layout-shift entries'); - assert_equals(performance.getEntries().filter(e => e.entryType === 'layout-shift').length, 0, 'getEntries should have no layout-shift entries'); - })).observe({type: 'layout-shift'}); - // Modify the position of the div. - document.getElementById('myDiv').style = "top: 60px"; + // The entry should not be available via getEntries* methods. + assert_equals(performance.getEntriesByType('layout-shift').length, 0, 'getEntriesByType should have no layout-shift entries'); + assert_equals(performance.getEntriesByName('', 'layout-shift').length, 0, 'getEntriesByName should have no layout-shift entries'); + assert_equals(performance.getEntries().filter(e => e.entryType === 'layout-shift').length, 0, 'getEntries should have no layout-shift entries'); + resolve(); + })).observe({type: 'layout-shift'}); + // Modify the position of the div. + document.getElementById('myDiv').style = "top: 60px"; + }); }, 'Layout shift before onload is not buffered into the performance timeline.'); </script>